<?php

if (!defined('BASEPATH'))
    exit('No direct script access allowed');

class Docente extends MN_Controller {

    function __construct() {
        parent::__construct();
        $this->load->database();
        $this->load->helper(array('url', 'form'));
        $this->load->library('ion_auth');
        $this->load->library('session');
        $this->load->model('Persona_Model');
        $this->load->model('docente_model');
        $this->load->model('calificacion_model');
        $this->load->model('ciclos_model');
        $this->load->library('utilidades');
    }

    public function index() {

        if (!$this->ion_auth->logged_in()) {
            //redirect them to the login page
            redirect('auth/login', 'refresh');
        } elseif (!$this->ion_auth->is_admin()) {
            //redirect them to the home page because they must be an administrator to view this
            $this->_render('docente/inicio');
             
        } else {
            //set the flash data error message if there is one
            $this->_render('home/inicio');
             
        }
    }
    /*
     * SELECT
    `persona`.`nombre_pers`
    , `persona`.`apellido_pers`
    , `persona`.`fono_pers`
    , `persona`.`username_pers`
    , `persona`.`email_inst_pers`
    , `persona`.`ide_pers`
FROM
    `acad`.`persona`
    INNER JOIN `acad`.`docente` 
        ON (`persona`.`ide_pers` = `docente`.`persona_ide_pers`)
  WHERE `persona`.`ide_pers` NOT IN(SELECT
    `persona`.`ide_pers`
FROM
    `acad`.`persona`
    INNER JOIN `acad`.`users` 
        ON (`persona`.`ide_pers` = `users`.`ide_pers`));
     */
   

    public function inicio() {
        if (!$this->ion_auth->logged_in() || !$this->ion_auth->is_student()  ) {
            $this->session->set_flashdata('message', 'No pertence al grupo de Estudiante');

            redirect('auth/login', 'refresh');
        }

        //$this->data['docentes'] = $this->Docente_Model->getListado();
        $this->data['user'] = $this->ion_auth->get_user_username();
        $this->data['id_persona'] = $this->ion_auth->get_user_idepers();
        $_SESSION["docente_id"]=$this->data['id_persona'];
        if(isset($_SESSION["menu"])==false){
            
            $_SESSION["menu"]=$this->utilidades->listaMaterias($this->data['id_persona']);
        }
        $this->data["docente"]=  $this->docente_model->getDatosDocente($this->data['id_persona']);
        
        $this->_render('docentes/frm_inicio');
        //print_r($this->session->userdata);
        
    }
    
    public function crear() {
        $this->load->library('form_validation');
        $this->_render('docentes/new');
    }

    public function actualizar() {
        $this->load->helper(array('url', 'form'));
        $this->load->library('form_validation');

        $opc = $this->uri->segment(3);
        $ide_pers = $this->uri->segment(4);
        if (!isset($_POST['cedula_pers'])) {
            $this->data['docente'] = $this->Docente_Model->getDatosDocente($ide_pers);
            $this->data['opc'] = $opc;
            $this->_render('docentes/update');
        } else {
            $ide_pers = $this->input->post('persona_ide_pers');
            $opc = $this->input->post('txtopc');
            //$this->data['docente'] = $this->Docente_Model->getDatosDocente($ide_pers);
            $this->data['opc'] = $opc;

            $this->form_validation->set_rules('cedula_pers', 'NUMERO DE CEDULA', 'trim|integer|required');
            $this->form_validation->set_rules('nombre_pers', 'NOMBRES', 'required|trim');
            $this->form_validation->set_rules('apellido_pers', 'APELLIDOS', 'required|trim');
            $this->form_validation->set_rules('nacionalidad_pers', 'NACIONALIDAD', 'required|trim');
            $this->form_validation->set_rules('provincia_pers', 'PROVINCIA', 'required|trim');
            $this->form_validation->set_rules('ciudad_pers', 'CIUDAD', 'required|trim');
            $this->form_validation->set_rules('direccion_pers', 'DIRECCION', 'required|trim');
            $this->form_validation->set_rules('email_inst_pers', 'Email personal requerido', 'required|trim|valid_email');

            if (($this->form_validation->run() == FALSE)) {
                $this->data['docente'] = $this->Docente_Model->getDatosDocente($ide_pers);

                $this->data['opc'] = $opc;

                $this->_render('docentes/update');
            } else {

                $error_fatal = 0;

                if (!empty($_FILES['foto_pers']['name'])) {
                    $config['upload_path'] = './commons/personas/';
                    $config['allowed_types'] = 'gif|jpg|png|jpeg';
                    $config['max_size'] = '3000';
                    $config['max_width'] = '1024';
                    $config['max_height'] = '768';

                    $this->load->library('upload', $config);

                    if (!$this->upload->do_upload('foto_pers')) {
                        $this->data['msj_error'] = $this->upload->display_errors();
                        $upload_data = null;
                        $error_fatal = 0;
                    } else {
                        $upload_data = $this->upload->data();
                        $error_fatal = 1;
                    }
                } else {
                    $error_fatal = 2;
                }
                switch ($error_fatal) {

                    case 0:
                        $this->_render('docentes/update');
                        break;
                    case 1:
                    case 2:
                        $persona = array(
                            "cedula_pers" => $this->input->post('cedula_pers'),
                            "tipo_doc_pers" => $this->input->post('tipo_doc_pers'),
                            "nombre_pers" => $this->input->post('nombre_pers'),
                            "apellido_pers" => $this->input->post('apellido_pers'),
                            "nacionalidad_pers" => $this->input->post('nacionalidad_pers'),
                            "provincia_pers" => $this->input->post('provincia_pers'),
                            "ciudad_pers" => $this->input->post('ciudad_pers'),
                            "direccion_pers" => $this->input->post('direccion_pers'),
                            "refer_domic_pers" => $this->input->post('refer_domic_pers'),
                            "sexo_pers" => $this->input->post('sexo_pers'),
                            "estado_civil_pers" => $this->input->post('estado_civil_pers'),
                            "fecha_nac_pers" => date("Y-m-d", strtotime($this->input->post('fecha_nac_pers'))),
                            "fono_pers" => $this->input->post('fono_pers'),
                            "celular_pers" => $this->input->post('celular_pers'),
                            "email_inst_pers" => $this->input->post('email_inst_pers'),
                            "foto_pers" => ($error_fatal == 1 ? base_url() . "commons/personas/" . $_FILES['foto_pers']['name'] : $this->input->post('foto_pers')),
                        );

                        //$persona_ide_pers=1;
                        $docente = array(
                            "cat_escalofon_doc" => $this->input->post('cat_escalofon_doc'),
                            "tipo_contrato_doc" => $this->input->post('tipo_contrato_doc'),
                            "concurso_doc" => $this->input->post('concurso_doc'),
                            "dedicacion_doc" => $this->input->post('dedicacion_doc'),
                            "cursa_estudios_doc" => $this->input->post('cursa_estudios_doc'),
                            "fecha_ingreso1_doc" => date("Y-m-d", strtotime($this->input->post('fecha_ingreso1_doc'))),
                            "fecha_salida1_doc" => date("Y-m-d", strtotime($this->input->post('fecha_salida1_doc'))),
                            "fechaingeso2_doc" => date("Y-m-d", strtotime($this->input->post('fechaingeso2_doc'))),
                            "fecha_salida2_doc" => date("Y-m-d", strtotime($this->input->post('fecha_salida2_doc'))),
                            "fecha_ingeso3_doc" => date("Y-m-d", strtotime($this->input->post('fecha_ingeso3_doc'))),
                            "fecha_salida3_doc" => date("Y-m-d", strtotime($this->input->post('fecha_salida3_doc'))),
                            "activo_doc" => $this->input->post('activo_doc'));


                        if ($opc == 'upd') {
                            $this->Persona_Model->actualizarPersona($persona, $ide_pers);
                            $this->Docente_Model->actualizarDocente($docente, $ide_pers);
                        } else {
                            $this->Docente_Model->eliminarDocente($ide_pers);
                        }




                        break;
                }
                redirect('docente/inicio');
            }
        }
    }

    function presearch() {
        $who = $this->input->post('txtsearch');

        if (empty($who))
            redirect("docente/inicio");
        else {
            // echo $who." busqueda";

            $this->data['docentes'] = $this->Docente_Model->getBusquedaDocente($who, $this->input->post('tipo_busqueda'));
            //$this->data['docentes'] = $this->Docente_Model->getListado();
            $this->_render('docentes/start');
        }
    }

    public function ingresodatos() {

        $this->load->library('form_validation');

        $this->form_validation->set_rules('cedula_pers', 'NUMERO DE CEDULA', 'trim|integer|required');
        $this->form_validation->set_rules('nombre_pers', 'NOMBRES', 'required|trim');
        $this->form_validation->set_rules('apellido_pers', 'APELLIDOS', 'required|trim');
        $this->form_validation->set_rules('nacionalidad_pers', 'NACIONALIDAD', 'required|trim');
        $this->form_validation->set_rules('provincia_pers', 'PROVINCIA', 'required|trim');
        $this->form_validation->set_rules('ciudad_pers', 'CIUDAD', 'required|trim');
        $this->form_validation->set_rules('direccion_pers', 'DIRECCION', 'required|trim');
        $this->form_validation->set_rules('email_inst_pers', 'Email personal requerido', 'required|trim|valid_email');


        if (($this->form_validation->run() == FALSE)) {
            //echo "algun error";
            $this->_render('docentes/new');
        } else {
            $username = substr($this->input->post('nombre_pers'), 0, strpos($this->input->post('nombre_pers'), " ") - 1)
                    . substr($this->input->post('apellido_pers'), 0, 1)
                    . substr(md5(microtime()), 1, 3);

            //$v=!empty($this->input->post('foto_pers'));
            //if (isset($_FILES['image']) && !empty($_FILES['image']['name']))

            $error_fatal = 0;

            if (!empty($_FILES['foto_pers']['name'])) {
                $config['upload_path'] = './commons/personas/';
                $config['allowed_types'] = 'gif|jpg|png|jpeg';
                $config['max_size'] = '3000';
                $config['max_width'] = '1024';
                $config['max_height'] = '768';

                $this->load->library('upload', $config);

                if (!$this->upload->do_upload('foto_pers')) {
                    $this->data['msj_error'] = $this->upload->display_errors();
                    $upload_data = null;
                    $error_fatal = 0;
                } else {
                    $upload_data = $this->upload->data();
                    $error_fatal = 1;
                }
            } else {
                $error_fatal = 2;
            }
            switch ($error_fatal) {

                case 0:
                    $this->_render('docentes/new');
                    break;
                case 1:
                case 2:
                    $persona = array(
                        "cedula_pers" => $this->input->post('cedula_pers'),
                        "tipo_doc_pers" => $this->input->post('tipo_doc_pers'),
                        "nombre_pers" => $this->input->post('nombre_pers'),
                        "apellido_pers" => $this->input->post('apellido_pers'),
                        "nacionalidad_pers" => $this->input->post('nacionalidad_pers'),
                        "provincia_pers" => $this->input->post('provincia_pers'),
                        "ciudad_pers" => $this->input->post('ciudad_pers'),
                        "direccion_pers" => $this->input->post('direccion_pers'),
                        "refer_domic_pers" => $this->input->post('refer_domic_pers'),
                        "sexo_pers" => $this->input->post('sexo_pers'),
                        "estado_civil_pers" => $this->input->post('estado_civil_pers'),
                        "fecha_nac_pers" => date("Y-m-d", strtotime($this->input->post('fecha_nac_pers'))),
                        "fono_pers" => $this->input->post('fono_pers'),
                        "celular_pers" => $this->input->post('celular_pers'),
                        "email_inst_pers" => $this->input->post('email_inst_pers'),
                        "foto_pers" => ($error_fatal == 1 ? base_url() . "commons/personas/" . $_FILES['foto_pers']['name'] : base_url() . "commons/personas/foto.jpg"),
                        "username_pers" => $username);

                    //$persona_ide_pers=1;
                    $persona_ide_pers = $this->Persona_Model->grabarPersona($persona);
                    $docente = array(
                        "persona_ide_pers" => $persona_ide_pers,
                        "cat_escalofon_doc" => $this->input->post('cat_escalofon_doc'),
                        "tipo_contrato_doc" => $this->input->post('tipo_contrato_doc'),
                        "concurso_doc" => $this->input->post('concurso_doc'),
                        "dedicacion_doc" => $this->input->post('dedicacion_doc'),
                        "cursa_estudios_doc" => $this->input->post('cursa_estudios_doc'),
                        "fecha_ingreso1_doc" => date("Y-m-d", strtotime($this->input->post('fecha_ingreso1_doc'))),
                        "fecha_salida1_doc" => date("Y-m-d", strtotime($this->input->post('fecha_salida1_doc'))),
                        "fechaingeso2_doc" => date("Y-m-d", strtotime($this->input->post('fechaingeso2_doc'))),
                        "fecha_salida2_doc" => date("Y-m-d", strtotime($this->input->post('fecha_salida2_doc'))),
                        "fecha_ingeso3_doc" => date("Y-m-d", strtotime($this->input->post('fecha_ingeso3_doc'))),
                        "fecha_salida3_doc" => date("Y-m-d", strtotime($this->input->post('fecha_salida3_doc'))),
                        "activo_doc" => $this->input->post('activo_doc'));

                    $this->Docente_Model->grabarDocente($docente);
                    redirect('docente/inicio');


                    break;
            }
        }
    }
    /**
     * Carga y visualiza los estudiantes que le pertenecen al docente
     * @param type $periodo El periodo lectivo actual
     * @param type $materia La materia que dicta el docente
     * @param type $seccion La seccion de la materia
     * @param type $paralelo El paralelo que da
     * @return type La lista de estudiantes
     */
    public function verListaAlumno($periodo, $materia, $seccion, $paralelo){
        if (!$this->ion_auth->logged_in() || !$this->ion_auth->is_teacher()  ) {
            $this->session->set_flashdata('message', 'No pertence al grupo de Docentes');

            redirect('auth/login', 'refresh');
        }
        $this->data['user'] = $this->ion_auth->get_user_username();
        $this->data['id_persona'] = $this->ion_auth->get_user_idepers();
        $_SESSION["docente_id"]=$this->data['id_persona'];
        if(isset($_SESSION["menu"])==false){
            
            $_SESSION["menu"]=$this->utilidades->listaMaterias($this->data['id_persona']);
        }
        $this->data["link"]="/".$periodo."/".$materia."/".$seccion."/".$paralelo;
        $this->data["periodo"]=  $this->calificacion_model->obtenerPeriodo($periodo);
        $materia1=$this->calificacion_model->obtenerMateria($materia);
        $this->data["materia"]=  $materia1[0]["nombre_mat"];
        $this->data["paralelo"]=  $paralelo;
        $this->data["carrera"]=  $materia1[0]["nombre_car"];
        $this->data["ciclo"]=  $materia1[0]["nombre_cic"];
        $seccionAux = $this->utilidades->secciones($seccion);
        $this->data["seccion"]=  $seccionAux["nombre"];
        $this->data["verSupletarios"]=  $this->verificarNotasPrimeroSegundo($periodo, $materia, $seccion, $paralelo);
        $this->data["listaEstudiante"]=  $this->docente_model->cargarEstudiantesCalificaciones($periodo, $materia, $seccion, $paralelo);
        $this->data["listaEstudianteSupletorios"]=  $this->listaSupletorios($periodo, $materia, $seccion, $paralelo);
        $this->data["listaResumen"]=  $this->listaResumen($periodo, $materia, $seccion, $paralelo);
        $this->_render('docentes/frm_listaEstudiantes');
    }
    /**
     * Crea la lista de estudiantes para notas
     * @param type $periodo El periodo lectivo actual
     * @param type $materia La materia que dicta el docente
     * @param type $seccion La seccion de la materia
     * @param type $paralelo El paralelo que da
     * @return type La lista de estudiantes
     */
    public function crearListaAlumno($periodo, $materia, $seccion, $paralelo){
        if (!$this->ion_auth->logged_in() || !$this->ion_auth->is_teacher()  ) {
            $this->session->set_flashdata('message', 'No pertence al grupo de Docentes');

            redirect('auth/login', 'refresh');
        }       
        $lista=  $this->docente_model->cargarEstudiantes($periodo, $materia, $seccion, $paralelo);
        foreach ($lista as $item){
            $data=array("cursa_ide_cur"=>$item["ide_cur"]);
            $this->calificacion_model->crearCalificaciones($data);
        }
        redirect('docente/verListaAlumno/'.$periodo."/".$materia."/".$seccion."/".$paralelo);
    }
    
    public function guardarCalificaciones($periodo, $materia, $seccion, $paralelo,$bimestre){
        $listado=  $this->docente_model->cargarEstudiantesCalificaciones($periodo, $materia, $seccion, $paralelo);
        $fechaE = new DateTime();
        $fecha = $fechaE->format("Y-m-d");
        foreach ($listado as $item){
            if($bimestre==1){
                $data=array("evacont1_cal"=>$_POST[$item['ide_cal'].'_ec1'],
                    "exam1_cal"=>$_POST[$item['ide_cal'].'_eb1'],
                    "asiste1_cal"=>$_POST[$item['ide_cal'].'_as1'],
                    "fecha_exa1"=>$fecha,
                    "obs1_cal"=>$_POST[$item['ide_cal'].'_ob1'],
                    "total1"=>$_POST[$item['ide_cal'].'_to1'],
                    "ingnot1"=>($item['ingnot1']+1));
                $this->calificacion_model->actualizarCalificaciones($data,$item["ide_cal"]);
                //actualizarCalificaciones
            }else if($bimestre==2){
                $data=array("evacont2_cal"=>$_POST[$item['ide_cal'].'_ec2'],
                    "exam2_cal"=>$_POST[$item['ide_cal'].'_eb2'],
                    "asiste2_cal"=>$_POST[$item['ide_cal'].'_as2'],
                    "fecha_ex2"=>$fecha,
                    "obs2_cal"=>$_POST[$item['ide_cal'].'_ob2'],
                    "total2"=>$_POST[$item['ide_cal'].'_to2'],
                    "ingnot2"=>($item['ingnot2']+1));
                $this->calificacion_model->actualizarCalificaciones($data,$item["ide_cal"]);
            }
        }
        $this->session->set_flashdata('exito', "Se ha registrado las notas correctamente");
        redirect('docente/verListaAlumno/'.$periodo."/".$materia."/".$seccion."/".$paralelo);
    }
    
    public function guardarSupletorios($periodo, $materia, $seccion, $paralelo,$bimestre){
        $listado=  $this->listaSupletorios($periodo, $materia, $seccion, $paralelo);        
        $fechaE = new DateTime();
        $fecha = $fechaE->format("Y-m-d");
        foreach ($listado as $item){
          
                $data=array("suple_cal"=>$_POST[$item['ide_cal'].'_sup'],                    
                    "fecha_sup"=>$fecha,
                    "obs3_cal"=>$_POST[$item['ide_cal'].'_ob3']
                    );
                $this->calificacion_model->actualizarCalificaciones($data,$item["ide_cal"]);
                //actualizarCalificaciones
            
        }
        $this->session->set_flashdata('exito', "Se ha registrado supletorios correctamente");
        redirect('docente/verListaAlumno/'.$periodo."/".$materia."/".$seccion."/".$paralelo);
    }
    
    public function volveCrearListaAlumno($periodo, $materia, $seccion, $paralelo){
        $lista=  $this->docente_model->cargarEstudiantes($periodo, $materia, $seccion, $paralelo);        
        $listaCalificaciones=  $this->docente_model->cargarEstudiantesCalificaciones($periodo, $materia, $seccion, $paralelo);        
        $listaAux = array();
        foreach ($lista as $item){
            if($this->revisarEstudiante($item["ide_est"],$listaCalificaciones)==false){
                $listaAux[]=$item;
            }
            //$this->docente_model->borrarEstudianteCalificacion($item['ide_cal']);
        }
        foreach ($listaAux as $item){
            $data=array("cursa_ide_cur"=>$item["ide_cur"]);
            $this->calificacion_model->crearCalificaciones($data);
        }
        //redirect("docente/crearListaAlumno/".$periodo."/".$materia."/".$seccion."/".$paralelo,"refresh");
        redirect('docente/verListaAlumno/'.$periodo."/".$materia."/".$seccion."/".$paralelo);
    }
    private function revisarEstudiante($id_estudiante,$lista){
        
        $band = false;
        foreach ($lista as $item){
            if($item["ide_est"]==$id_estudiante){
                $band=true;
                break;
            }
        }
        return $band;
    }
    
    private function verificarNotasPrimeroSegundo($periodo, $materia, $seccion, $paralelo){
        $lista=  $this->docente_model->verificarNotasPrimeroSegundo($periodo, $materia, $seccion, $paralelo);        
        $band = false;
        if($lista[0]["primero"]>0&&$lista[0]["segundo"]>0){
            $band = true;
        }
        return $band;
    }
    private function listaSupletorios($periodo, $materia, $seccion, $paralelo){
        $data = array();
        $lista=  $this->docente_model->sumarNotasPrimeroSegundo($periodo, $materia, $seccion, $paralelo);   
        foreach ($lista as $item){
            if($item["total"]<28 && $item["total"]>=8&&($item["asiste"]/2)>=75){
                $data[]=$item;
            }
        }
        return $data;
    }
     private function listaResumen($periodo, $materia, $seccion, $paralelo){
        $data = array();
        $lista=  $this->docente_model->sumarNotasPrimeroSegundo($periodo, $materia, $seccion, $paralelo);   
        foreach ($lista as $item){
            $estado = 3;
            $observacion='';
            if($item["suple_cal"]==0){
                if($item["total"]>=28){
                    if(round($item["asiste"]/2)>=75){
                        $estado = 2;
                        
                    }else{
                        $observacion='Repreuba por número de faltas';
                    }
                }else{
                    $observacion='Repreuba por no alcanzar la nota maxima';                    
                }
            }else if($item["suple_cal"]>0){
                $nota1 = $item["total1"];
                $nota2 = $item["total2"];
                $suple =  $item["suple_cal"];
                if($suple>$nota1&&$nota1<=$nota2){
                    $observacion='Se reemplaza la nota del primer bimestre: '.$nota1.' con la de supletorio: '.$suple;                    
                    $nota1=$suple;           
                    $item["total1"]=$nota1;
                }else if($suple>$nota2&&$nota2<=$nota1){
                    $observacion='Se reemplaza la nota del segundo bimestre: '.$nota2.' con la de supletorio: '.$suple;                    
                    $nota2=$suple;                    
                    $item["total2"]=$nota2;
                }
                $total = ($nota1*1)+($nota2*1);
                if($total>=28){
                    if(round($item["asiste"]/2)>=75){
                        $estado = 2;
                    }else{
                        $observacion.=' Repreuba por número de faltas';
                    }
                }else{
                    $observacion.=' Repreuba por no alcanzar la nota maxima';                    
                }
            }
            $item['estado_cur']=$estado;
            $item['obsevaFinal']=$observacion;
            $data[]=$item;
            
        }
        return $data;
    }
}

/* End of file welcome.php */
    /* Location: ./application/controllers/welcome.php */



    